home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 7: Sunsite / Linux Cubed Series 7 - Sunsite Vol 1.iso / system / admin / sudo-1.000 / sudo-1 / sudo-1.2 / sudo.linux.diff2 < prev    next >
Text File  |  1995-03-09  |  2KB  |  90 lines

  1. Note this patch didn't work directly and was installed by hand.
  2.  
  3. diff -ur old/sudo-1.2/Makefile sudo-1.2/Makefile
  4. - --- old/sudo-1.2/Makefile    Sun Mar 20 20:45:40 1994
  5. +++ sudo-1.2/Makefile    Wed Mar  8 12:43:41 1995
  6. @@ -88,7 +88,7 @@
  7.  #
  8.  
  9.  # define this for shadow passwords
  10. - -    SHADOW =
  11. +    SHADOW = -DSHADOW_PWD
  12.          CC = gcc
  13.         LEX = flex
  14.        YACC = bison -y
  15. @@ -108,7 +108,7 @@
  16.  MANSECTION = 8
  17.      MANDIR = /usr/man/man${MANSECTION}
  18.        PROG = sudo.bin
  19. - -      LIBS = -lfl
  20. +      LIBS = -lfl -lshadow
  21.      SUNOS4 = -Bstatic
  22.       LINUX = 
  23.  
  24. diff -ur old/sudo-1.2/check.c sudo-1.2/check.c
  25. - --- old/sudo-1.2/check.c    Sun Dec  5 23:57:31 1993
  26. +++ sudo-1.2/check.c    Wed Mar  8 12:41:46 1995
  27. @@ -48,6 +48,11 @@
  28.  #include <sys/types.h>
  29.  #endif
  30.  
  31. +#ifdef SHADOW_PWD
  32. +#include <shadow.h>
  33. +#define crypt pw_encrypt
  34. +#endif
  35. +
  36.  char *getpass();
  37.  
  38.  static int  check_timestamp();
  39. @@ -79,7 +84,7 @@
  40.      }
  41.  rtn = check_timestamp();    
  42.  #ifdef LINUX
  43. - -if ( setreuid (uid) ) {      /* don't want to be root longer than necessary */
  44. +if ( setreuid (uid, -1) ) {      /* don't want to be root longer than necessary */
  45.  #else 
  46.  if ( setruid (uid) ) {      /* don't want to be root longer than necessary */
  47.  #endif
  48. @@ -96,7 +101,7 @@
  49.      }
  50.  update_timestamp();
  51.  #ifdef LINUX
  52. - -if ( setreuid (uid) ) {      /* don't want to be root longer than necessary */
  53. +if ( setreuid (uid, -1) ) {      /* don't want to be root longer than necessary */
  54.  #else
  55.  if ( setruid (uid) ) {      /* don't want to be root longer than necessary */
  56.  #endif
  57. @@ -217,14 +222,14 @@
  58.  
  59.  static void check_passwd()
  60.  {
  61. - -#ifndef SHADOW_PWD
  62.  char *crypt();
  63. - -#endif
  64.  struct passwd *pw_ent;
  65.  char *encrypted;                          /*  this comes from /etc/passwd  */
  66.  char *pass;                               /*  this is what gets entered    */
  67.  register int counter=TRIES_FOR_PASSWORD;
  68. - -
  69. +#ifdef SHADOW_PWD
  70. +struct spwd *sp;
  71. +#endif
  72.  
  73.  if ( (pw_ent = getpwuid( uid )) == NULL ) {
  74.      sprintf ( user, "%u", uid );
  75. @@ -232,7 +237,11 @@
  76.      inform_user ( GLOBAL_NO_PW_ENT );
  77.      exit (1);
  78.      }
  79. - -
  80. +#ifdef SHADOW_PWD
  81. +sp = getspnam(pw_ent->pw_name);
  82. +if (sp)
  83. +    pw_ent->pw_passwd = sp->sp_pwdp;
  84. +#endif
  85.  encrypted = pw_ent -> pw_passwd;
  86.  
  87.  /* you get TRIES_FOR_PASSWORD times to guess your password */
  88.  
  89. ------------------------------
  90.